perm filename TESTJ[E,ALS]3 blob sn#237038 filedate 1976-09-24 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00007 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002				TITLE
C00016 00003	A table for testing TJ commands
C00023 00004	A new ETV is up with major changes to the justification commands, and
C00055 00005	XJFILL XJUST XJGET XSJFILL XSJUST	Justification commands:
C00076 00006	XALIGN XJLEFT XINDENT → ← XCENTER   MARGIN CONTROL commands:
C00084 00007	         1         2         3         4         5         6         7         8
C00087 ENDMK
C⊗;
			TITLE

	This is a test paragraph that begins with a TAB and that follows a blank
line.  It is to be used to test out various forms of justification.

        This is a test paragraph that begins with 8 spaces and that follows a
blank line.  It is to be used to test out various forms of justification.

	    This is a test paragraph that begins with a TAB and then 4 spaces
and that follows a blank line.  It is to be used to test out various forms of
justification.

    	This is a test paragraph that begins with 4 spaces and then a TAB and
that follows a blank line.  It is to be used to test out various forms of
justification.

****The text that follows does not have any blank lines.
	This is a test paragraph that begins with a TAB.  It is to be used to
test out various forms of justification.
        This is a test paragraph that begins with 8 spaces.  It is to be used to
test out various forms of justification.
	    This is a test paragraph that begins with a TAB and then 4 spaces.
It is to be used to test out various forms of justification.
    	This is a test paragraph that begins with 4 spaces and then a TAB.
It is to be used to test out various forms of justification.

    123456789 123456789 123456789
ABC.
DEF.
GHI.
JKL.
MNO.
PQR.
STU.
VWX.
YZ.
123.
456.
789.
ABC.
DEF.
GHI.
JKL.
MNO.
PQR.
STU.
VWX YZ.


    The Jget command should  accept some typed-in  margins and it  should,
when so ordered,  complete the set  of margins by  inspecting a  specified
range A.  L. SAMUEL he text  that is being editer.  Margin values  consist
of The  paragraph  indentation (refered  to  as PMAR).   The  normal  left
indentation (LMAR), the last right-most column to be occupied by the  text
(RMAR), and the number of blank  lines that are to precede the  individual
paragraphs (BNUM).  It  is anticipated  that one  might very  well have  a
variety  of  different  paragraphs  on   the  page,  all  with   different
indentations and  with some  separated  by blank  lines  and some  not  so
separated.  One should still be able  to use JGET without to much  trouble
This page has  been typed to  illustrate the problem  and to provide  some
text to test out various ideas.  1234 5678 9

    At the present time I am of the opinion that the following conventions
will handle the situation.

    1) The commands JGET and TJGET may be typed with or without a  leading
argument and with or without trailing arguments and with or without  there
being anything in the  ATTACH buffer.  2)  The leading argument  specifies
the number of lines of text to be  used.  If this number is missing or  if
it exceeds the number of lines on the page (or in the ATTACH buffer)  then
the inspection extends to the  end of the page (or  the end of the  ATTACH
buffer).  The inspection begins at the arrow location (or at the start  of
the ATTACH buffer).  This will be called the first line.

    3) A zero leading argument specifies that no text inspection is to  be
made.  In  this case  the default  margin specifications  are to  be  used
unless they are specified in the trailing string of arguments.

    4) The  trailing arguments  consist  of a  series of  decimal  numbers
separated by commas.  Missing arguments  are indicated by commas that  are
not preceded by numerical values.

    5) If an initial argument is used, then all margins are to be reset to
the values specified by  the trailing arguments or,  if not so  specified,
they are to be infered by an inspection of the text.

    --- 00 01 02 03 04 05 06 07

    000 NUL ↓ α β ∧ ¬ ε π X 010 λ TAB LF VT FF CR ∞ ∂ 002 ⊂ ⊃ ∩ ∪ ∀ ∃ ⊗  ↔
003 _ → ~ ≠ ≤ ≥ ≡ ∨

    αXJUST +3,4,66<cr> Justify the current page or the ATTACH buffer using
temporary margins  as  specified  (in this  example  to  7, 4  and  to  66
respectively).

    αβXJUST ,4,66<cr> Justify the current page or the ATTACH buffer  using
new sticky margins as specified.  These new values now become the  default
values.   The  paragraph  indentation  will  be  left  at  the  previously
specified value.

    CONDITIONS ACTION P(old)  L(old) B(old)  New par.  @  PMAR after  BNUM
Other lines at LMAR

    N N 0 for all old lines Overflow only at LMAR N N >0 after blank lines
only Other lines at LMAR >1 0 0 if INDENT>1 or after blank " " " " N ≠N,>0
>0 if INDENT=N or after blank " " " " ZZZZZZZZ
A table for testing TJ commands

        00      01      02      03      04      05      06      07

000     NUL     ↓       α       β       ∧       ¬       ε       π
010     λ       TAB     LF      VT      FF      CR      ∞       ∂
020     ⊂       ⊃       ∩       ∪       ∀       ∃       ⊗       ↔
030     _       →       ~       ≠       ≤       ≥       ≡       ∨
040     SP      !       "       #       $       %       &       '
050     (       )       *       +       ,       -       .       /
060     0       1       2       3       4       5       6       7
070     8       9       :       ;       <       =       >       ?

Still another version

	         00   01   02   03   04   05   06   07

	    000  NUL  ↓    α    β    ∧    ¬    ε    π
	    010  λ    TAB  LF   VT   FF   CR   ∞    ∂
	    020  ⊂    ⊃    ∩    ∪    ∀    ∃    ⊗    ↔
	    030  _    →    ~    ≠    ≤    ≥    ≡    ∨
	    040  SP   !    "    #    $    %    &    '
	    050  (    )    *    +    ,    -    .    /
	    060  0    1    2    3    4    5    6    7
	    070  8    9    :    ;    <    =    >    ?

A very simple table

11  22  33  44
55  66  77  88

123456789 123456789 123456789 123456789 123456789 123456789 123456789

   αβXTJG       This command is used if one wants to find
		the margin and columns spacings from a table
		that already exists either in a desired
		format or a formatted table that is to be
		reformatted in some way.

   For single-page searches the commands are:

123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789
αβFSmith<cr>    Find just plain Smith or smith but not this
		string in $smith, in blacksmith or in
		Smithsonian.  Note that % and _ are accepted
		as alphamerics.
αFSmith<cr>

αFSmith<cr>
		Find smith as an isolated word or as part of
		a longer string (in blacksmith for example).
		The string will be found even where not
		delimited by non-alphamerics.

Round-Robin Scores

vs	1	2	3	4	5	6
1	x


2		x


3			x	15-2
				15-7

4				x


5					x


6						x

   Samuel, Art (Dr. Arthur L.)         202   PAE[S,ALS] 2 1000
     501 Portola Road, Portola Valley, 94025 (9) 851-1501 βDec 5

   Scheinman, Vic (Mr. Victor D.)      205   SRA[H,VDS] 2 200
     3689 South Court, Palo Alto, 94306,(9) 493-3038 βDec 28

Scherlis, Bill (Mr. William L.)		251	SRA[PV,WLS] 2
	2976 Cowper St., Palo Alto, (9) 494-1932 βAug 28

Schreiber, Joachim (Mr. Joachim F.) 	255C	S[PV,JFS] 2
	P.O. Box 9216, Stanford, 94305 (9) 328-3178  

Shimano, Bruce (Mr. Bruce E.)		230C	SRA[H,BES] 2 450
	1950 Cooley Avenue, #4109, Palo Alto, 94303, (9) 328-0319  βApril 11

Smith, Leland (Prof. Leland C.)         267       P[M*/VB,LCS] 2 900
	3732 Laguna Avenue, Palo Alto, (9) 493-9386  βAug 6

Steinberg, Lou (Mr. Louis I.)			SRA[PSI,LIS] 2 250
	1634 Milvia, No. 6, Berkeley 94709, (57) 845-4833  βJuly 16

Sutton, Rich (Mr. Richard S.)			S[H,RSS] 1
	25Y Manzanita Park, Stanford, 60521, (9) 321-4051  βSept 21


Samuel, Art (Dr. Arthur L.)             202     PAE[S,ALS] 2 1000
Scheinman, Vic (Mr. Victor D.)          205     SRA[H,VDS] 2 200
Scherlis, Bill (Mr. William L.)		251	SRA[PV,WLS] 2
Schreiber, Joachim (Mr. Joachim F.) 	255C	S[PV,JFS] 2
Shimano, Bruce (Mr. Bruce E.)		230C	SRA[H,BES] 2 450
Smith, Leland (Prof. Leland C.)         267       P[M*/VB,LCS] 2 900
Steinberg, Lou (Mr. Louis I.)			SRA[PSI,LIS] 2 250
Sutton, Rich (Mr. Richard S.)			S[H,RSS] 1
A new ETV is up with major changes to the justification commands, and
with seven new instructions added.  All users of these commands are urged
to read E.ALS[UP,DOC] (type <META><CONTROL>?  while using ETV).  Users
not already addicted to the justify commands in ETV might now find these
commands very usefull.

A new ETV is up with MAJOR changes to the JUSTification commands, and with 7 new
instructions. See E.ALS[UP,DOC]/2p (Use <CONTROL>?  while in ETV). Bugs to ALS.

	    Changes to the existing line manipulation commands
		       Effective September 3, 1976
		  (See page 30 for a more complete list)

1)  There is now no  effective limit to  the length of  lines that may  be
    handled by these commands.  (The actual limit is 131070 characters).

2)  Punctuation marks . ! and ? followed by a space, even with any  number
    of closure symbols (such as ",  ), ], etc) interposed, are treated  as
    sentence endings and are followed by 2 spaces when text is justified.

3)  The fast indent commands ← and → now use the absolute indent value
    associated with the last use of the ⊗XINDENT command.  The initial
    default value is 4.

4)  Negative prefix arguments are now permitted, for example,
    αβ-αβ5αβXJU<CR> now justifies the last 5 lines before, but not including,
    the arrow line.

5)  Left margins are now specified in terms of indent values not as column
    positions, that is, one  types a "0"  (not a "1"  as formerly) if  the
    line is to start with no indent.  This usage is now consistant for all
    commands.  (The right margin is still in terms of column position  and
    so specifies the number of chararacters on a line when the left indent
    is zero.)

6)  The number of blank lines (B) to be used between paragraphs may now be
    specified by typing  a fourth  suffixing number  (it may  be 0).   The
    default situation calls for there to be the same number of blank lines
    between individual paragraphs after justification as there were in the
    original text.  This default  situation may be reset  by typing -1  as
    the fourth number.

7)  All margin specifications are now sticky,  that is, if no margins  are
    specified then the  values previously specified  are used by  default.
    The original  default values  are: 4,0,74,-1.   This means  that,  the
    crown lines (first lines of new paragraphs) will be indented by 4, the
    main body of the text will have  0 indent, the right hand margin  will
    be at  column 74  and the  same number  of blank  lines will  be  used
    between paragraphs as in the original text.

8)  A zero  prefix  argument  (with commands  using  margins)  causes  the
    existing switch  setting  (see  below) and  margins  to  be  reported.
    Switch settings and margin values may  be changed, if desired, with  a
    zero-prefixed command.  The  new values will  be stored before  making
    the report, but no overt action  will be taken, such, for example,  as
    to replace  the  input conditions  from  the  output for  a  R  switch
    setting, or to get new input conditions  from the text for a G  switch
    setting.

11)  New paragraphs, in the text that is being justified, can now be detected
    in a variety of different ways.  However because of long usage, a line of
    text that is preceded by a blank line is still always assumed to start a
    new paragraph.

    The default or Normal condition (Set by the N switch, see below) is for
    a new paragraph to be signalled either by the presence of a preceding
    blank line or by an indent that is greater than 1.  Users who have used
    initial TABS as paragraph indicators may continue their usual practice.
    However, it is now possible to handle text that is not in the, so called,
    normal form.

12) SWITCHES

    XJUST and XJFILL now accept certain switches which affect the
    way these commands react to left margin indents in the text that is
    being justified. These switches are sticky, that is, once a switch is
    set, the conditions specified by the switch continue to hold for
    subsequent uses of the XJUST and XJFILL commands when no new switch
    is specified.

    Switches are typed as a single letter following the command name.  A
    switch is separated from the command either by a slash "/" or by a
    space and is separated from any margin values that may follow by
    another space).

    The initial default conditions correspond to those specified by the "N"
    switch as described below, that is, a preceding blank line or any indent
    of more than 1 space (a TAB counts as 8 spaces) signals the start of a 
    new paragraph.

Switch	Mneumonic 	Conditions in old text identifying a new paragraph
				(Besides preceding blank line)

N	Normal		Any indent >1
G	Get		Exact indent as gotten by examining specified text.
R       Rejustify       Exact indent (C value) previously specified.
U	Unchanged	Exact indent Unchanged as previously Used.

    For completeness, the range of usage for these different switches and
    their individual characteristics will be described below.

N   This is the default switch and the switch that will most often be used,
    certainly by the casual uses.

    The body of the text is assumed to be without any indent and all lines
    that are either preceded by a blank line or that are indented by more than
    one space (or a Tab) are assumed to start a new paragraph.


G   The G switch causes ETV to determine the initial situation by examining
    the text itself.

    This switch may be used if one wants to justify some text that is
    neither in the, so called, Normal format (when the N switch is used)
    nor in the format that has most recently been established by an earlier
    XJUST or XJFILL command (when the R switch is safer and faster).

    Care must be taken in using the G switch as the conditions to be used
    for making new-paragraph decisions are determined and then put to use
    without the user being able to verify the conditions before they are
    applied.  A slower but safe procedure is to use the XGET command to
    get ETV to the determine and display te margin conditions that it finds.
    One can verify these conditions by inspection, and then use the R switch
    with the justifying command to effect the desired justification.

    With the G switch, ETV examines the designated text, firstly to see if
    there are any blank lines.  If there are ETV assumes that the first line
    after this blank line is the start of a new paragraph.  If there are no
    blank lines in the designated text, ETV then gets the indentations for the
    first two lines and if these are not the same it assumes that the first
    one starts a paragraph (note that this means tha the text to be justified
    can not start with the last line of a paragraph).  If the first two lines
    examined have the same indent these are assumed to be normal text and the
    first line that has a different indent is assumed to start a paragraph.

R   The R switch causes the former output conditions to be used as the new
    input test conditions.

    This is the switch to use if one makes some editing changes to text that
    one has just put into some non-standard form.  It may also be used
    on text that is in any arbitrary form by first letting ETV determine
    the existing margin conditions using the new  XJGET  command.

U   The U switch causes the existing exact input conditions to be used.

    This is the switch to use if one has previously established conditions
    for justifying some non-normal text and now wants to justify another
    portion of text that conforms to the earlier established input
    conditions.

13) XJGET
    A new command XJGET has been added that determines the margin values
    of a designated portion of text in a manner similar to that discribed
    for the G switch above but it causes these data to be store as the
    margin values that will be used for subsequent XJUST or XJFILL commands.

    The right margin value is determined from the longest line in the sample.
    The blank line control is reset to the initial default condition.

    This command allows one to use a portion of the text that is already in the
    desired format as a sample of what is wanted, while the G switch gives
    ETV the task of determing the existing margins in the text that is to be
    justified. 

    
14) ⊗XSJFILL and ⊗XSJUSTs are two new commands that separates a designated
    portion of text into individual sentences with all sentences beginning at
    at the specified normal left margin and then JFILLed or JUSTified.  All
    blank lines that were in the original text are retained.  The sentences
    can then be easily rearranged for subsequent reformatting by the XJUST and
    XJFILL commands).  Note that crown line indents are lost.


		New commands for use with tabular material

Four new commands have been added that permit one to handle tabular material
in a manner analogous to way in which normal text can be treated.

Two types of commands are provided to take care of the two classes of input data
that are most apt to be encountered, these being:

A)  Tabular material that is in proper columnar alignment but that may have
    missing entries.

    The XTABLE command is intended for use with such material.

B)  Tabular material that may not be in proper columnar alignment, but where the
    entries are separated by at least 2 spaces or by TABs. There may also be
    normal text associated with eash tabular line which is to be justified.
    Of course, in this case there can be no missing entries.

    The XTJFILL and XTJUST commands are intended for use under these conditions.

These new Tabular commands require the specification of additional values in
addition to the P,L,R.B values specified with the XJUST and XJFILL commands.
Of course, just as for these older commands, default values may be used and
only those values that are to be changed need to be specified.  Switches and
margins are specified as usual (with some restrictions which will be described
later).

When new values are to be typed, these must start with a semicolon ";" and
they are to be separated by commas. Values not otherwise marked are taken to
be field lengths, that is the string ;5,8,9<CR> is taken to mean that there
are to be three columns the first one starting with an indent as specified by
the P value and with a field length of 5 character positions, this is to be
followed by a second field of 8 character positions, then one with a field
length of 9. These values supercede the field lengths that had previously
been specified for the first three fields and if still additional fields had
been specified these are to be retained and shifted to the right or left
as may be required because of the changed to the first three fields.

When several fields are to have the same length these fields may be specified
by the use of the @ sign, thus 9@5,7 means that there are to be 9 fields of
length 5 followed by a field of length 7.  Fields to the left of a field that
is to be changed may bek indicated that are to be left the
skipped by the use of commas without numbers, thus ,,7 means
leave the first two columns unchanged and make the next one with a length of 7.
Similarly 4@0,3@5 means leave the first 4 columns unchanged and make the
next 3 columns with lengths of 5.  Note that zero, in this case, does not mean
a column of zero length but means no change.

Fields must have widths of 3 or more to permit a single character and to
allow for there to be two spaces between the characters in different columns.
Should any particular entry be too long for the width specified, the next
entry is automatically moved to the right so as to preserve the desired
separation between columns.  Such excesses may propagate.

A fourth command  XTJGET  has been provided to perform the same function for
tabular material that is performed for ordinary text by the XGET command.
It should be noted that this command must deternine the positions of each
column as well as the left margins and so it must be given when the designeted
text is restricted to start with a tabular line in which there are no missing
entries.

The specificationns for these new tabular commands will be listed below.

⊗XTABLE 

This command must be given either A) with the G switch (see below) operative,
B) after a prior execution of the ⊗XTJGET command and then with the R switch
operative, or C) after a properly executed command or set of commands as
specified by A or B, as just described, and then with the U switch operative.
In effect, one must provide ETV with information as to the existing state of
the input textual material since there does not exist any "Normal" set of
conditions that can be assumed.  While, in principle, it is possible to
provide this information by typing it in, it is thought that this task
can best be handled by ETV.

Information regarding the desired new format must also be provided and this
will usually be done by typing the needed information as a suffixed string as
described below.  This information is sticky and it need not be retype.
If there exists a sample of tabular material that
is already in the desired format even this second task may be left to ETV by
again using the ⊗XTJGET command as explained below.
Note that the old format must be the first one established.

 This command will accept a prefix argument defining the number of lines
to be processed and a series of suffexed arguments similar in every respect to
the syntax used with XFILL and XJUST.  One enters information as to the desired
tabular fields by then typing a semicolon ";" followed by a series
of decimal numbers which define the field lengths to be used.  If several fields 
are to be all the same length the syntax, 5@7 for example, may be used meaning
in this case that there are to be 5 fields of 7 characters positions each.  
Alternately it is possible to define a field in terms of the last colmnar
position that it is to occupy by prefacing the number with an exclamation mark
"!".  Note that it is not possible to specify the starting column as this is
set by the cumulative lengths of the preceding fields.

For example, the command αβ7αβXTAble 4;10,6@5,!60<CR> would specify that there
be 8 fields with the first one occupying 10 columns starting at an indent of 4
then there are to be 6 fields each occuping 7 columns and a final field ending 
at column 60. The starting indent for this last field is obtainable by adding
up the columns already accounted for (44) and so the last field is to
be 16 columns wide.  Note that it is only necessary to type a single number
before the semicolon as this commands starts all lines with the crown or new paragraph
indent. The normal left margin indent is not used and the program automatically
determines the right margin value from the accumulated column count.

This command requires information as to the existing format of the
data to be reformatted and information as to the desired new format.  The old
format can most easily be obtained by usee of the XTJGET command.  The new format
imformation can then be typed in with the XTABLE command or it my also be
obtained from an existing table (or portion of a table) that is already in
the desired format by using XTJGET a second time.  Note especially that the old
format must be obtained before the new format is obtained even though it might
be convenient in some instances to reverse the order.


A)  The data may be separated into fields separated by 2 or more spaces (or a TAB)
between fields, but the fields may not be in alignment.  The table must of necessity
not contain any missing fields.

B)  The data is in proper alignment, in which case there may be missing entries.

2)  XTJUST  This command re-aligns tabular data and justifies associated text,
    subject to the condition that there be no empty entries in the original table.
    The different entries need not be aligned initially but at least 2 spaces, or
    a TAB, must separate entries.

    The desired columnar conditions may be defined by reference to data that
    is properly spaced by using the XTGET command or the column sizes may be
    typed as numbers following a semicolon ";" which after any normal margin
    specifying numbers that may have followed the command.

	 Major chances have been made to the JUST and JFILL commands.
		     (See p.16:18 for full details.)

1)  Lines of any length can now be handled by these commands.

2)  Left margins are now specified in terms of indent values, that is, one
    types 0 (not 1 as formerly) if the line is have no indent.  The  right
    margin is still specified by the column position.

3)  The number of blank lines (B) to be used between paragraphs may now be
    specified by typing  a fourth  suffixing number  (it may  be 0).   The
    initial default situation is for the same number of blank lines to  be
    used after justification  as there  were in the  original text.   This
    condition may be reset by typing -1 as the fourth number.

4)  All margin values are now sticky.  The initial default values are now
    4,0,74,-1.

5)  Switches are now used to change  the way that ETV detects  paragraphs.
    The initially set switch, N, (for Normal) calls for any indent ≥2  (or
    a TAB) to signal a new paragraph.  An Arbitrarily input crown indent A
    may, however, be assigned and used  by means of the switches as  noted
    below.  Switches are sticky and are typed as a single letter following
    the command name, separated from it and from any following  parameters
    by spaces.  For fuller details see p.16.

Switch	Mneumonic 	Conditions in old text identifying a new paragraph
				(Besides preceding blank line)
N	Normal		Normal crown indent ≥2
G	Get		Get Assigned crown indent A by examining text.
R       Rejustify       Rejustify (old C as new A input crown indent)
A	Assigned	Assigned crown indent (as previously determined).

6)  Seven new commands  have been  added to  facilitate the  justification
    operations, both for normal text and for tabular material.  All of the
    this explanation was justified  by means of  these new commands.   See
    p.16 to 18 for details.  These new commands are noted below.

⊗XJGET  This command examines test to determine the C,L,R values that were
    used in it  justification so that  other unjustified text  can be  put
    into the same form.

⊗XSJFILL  This command separates the text into separate sentences so  that
    the sentences can be reordered as desired.

⊗XSJUST  Similar to *SJFILL but the sentences  are padded so as to  obtain
    right-margin justified as well.

⊗XTABLE  This command  allows  one to  chance  the columnar  positions  of
    tabular text that is already  in proper columnar arrangement with  due
    allowance being made for empty entries.

⊗TJFILL  This command handles tabular material that is not in columns  and
    puts  it  into  any  desired  columnar  arrangement.   There  may   be
    associated textual material which will be left justified.

⊗TJUST  Similar to ⊗TJFILL  but the associated  testual material is  right
    justified as well.

⊗XTJGET  This command  does  for tabular  material  what ⊗XJGET  does  for
    ordinary text.

⊗XJFILL ⊗XJUST ⊗XJGET ⊗XSJFILL ⊗XSJUST	Justification commands:
    (See p.  17 for ⊗XALIGN, ⊗XINDENT, ⊗XJCENTER)
    (See p. 18 for ⊗XTJUST ⊗XTJFILL ⊗XTABLE and ⊗XTJGET)

    ⊗XJFILL and ⊗XJUST are basic justiification commands.  There is now no
effective limit to the length of lines that may be handled by these
commands.  It is always wise to do a αβ. before using these commands so that
one can undo their effect by using the XCANCEL command if necessary.

    The margin justifying commands allow one to adjust the length of
textual lines by moving words from line to line as required to achieve any
desired line length.  At the same time they permit the left margin to be
fixed at any desired position (both for crown lines, i.e. first lines of paragraphs,
and for normal text lines).  The XJUST command also pads the line by
distributing additional spaces between words so as to allign the right
margin as well.

    The range of application of these commands may be limited by a
prefixed decimal argument.  If no argument is specified the entire page
is justified.  If there is an attachment the ATTACH buffer is justified
rather than the page.  When the range is limited by a positive argument 
the justification starts with the arrow line while for a negative argument
the justification will be for the specified number of lines before (but
not including) the arrow line.

	XJFILL or XJUST, preceded by a 0 argument, causes ETV to report on
the current status of the switch setting (se below) and of the resulting
margins without any overt action other than to record any typed changes
to these values (these changes are recorded before the report is made). 

    The basic commands will accept a following string (separated from
the command itself by a space) which may contain a (single letter)
switch, a space, and a following string of decimal numbers separated by commas.	
The values specified in this following string are sticky and need not
be retyped on a subsequent use of the basic commands if the same parameters
are desired.  If only some of the arguments are to be changed, then only
these arguments need be typed with any missing numerical arguments indicated
by commas only.

	The switch letter is used to specify the conditions that are to be
taken in the original text to indicate paragraphs, and it may be one of the
following, N, G, R, or U.  N is the Normal switch and it is the initial
default switch.

    Blank lines are always assumed to mean a paragraph devision (for all
switch settings).

With the N switch operative, any line that is indented by 2 or more spaces
is also assumes to be a crown line, that is, to be the start of a new
paragraph.  Text without blank lines between paragraphs and with different
indents used for different crown lines may now be handled without difficulty.

  Note that this is a change (effective 8/30/75) from the previously
used convention which required a TAB indent, but this change should not
seriously bother anyone who has become used to the earlier convention.
An initial period in a line is no longer recognized as a crown
line indicator.

By specifying a switch letter other than N, one can now justify text that
is not in "normal" form, for example, with crown lines that are indented
less than the normal indent of the body of the paragraphs and without 
separating blank lines.

Switches

  N  The N switch causes ETV to recognize any indent greater than 1 and/or
the presence of a blank line as being a crown line indicator.  This is the switch
to use under normal conditions when the body of the text (non-crown lines)
is not indented.  It corresponds fairly closely to the older form of the
justify commands and hence it has been made the initial default switch.

  G  The G switch causes ETV to scan the specified section of the text that is
to be justified and to determine from this text the indent that has been
used to identify the crown lines in the original text.  The presence of this
indent is then used during the justification as a crown line signal (a blank
line is still recognized even without the identified crown indent).  This
is the switch to use when you wish to justify some text that had, at some time
in the past) been justified into some non-normal form and you.

	Care must be used with this switch to be sure that ETV will be able
to identify the crown indent correctly.  The procedure used is as follows:
The text to be justified is first scanned to locate of a blank line.  If
one is found then the next non-blank line is assumed to be a crown line and
its indent is stored as the desired identifying indent.  If no blank lines
are found within the specified text then the indents of the first two lines
are determined.  If these two values are not the same the first line is
assumed to be a crown line.  If the first two line indents are the same these
lines are taken to be non-crown lines and the rest of the text is scanned
for a line with a different indent and if one is found this is taken as
the desired crown indent indicator.  The practical effect of all of this is
that one should not start the justification with a line that is the last line
of a paragraph, but then doing this is quite meaningless in any case.

  R  (Rejustify)  The R switch causes ETV to take the last specified crown
indent as the crown line indicator for the new justification.  Note that 
this is switch is faster and safer than the G switch as the text is not scanned.
This is the switch to use to rejustify text that you have already justified
into some non-normal form when
either you have made some additional corrections to the text or you have decided
that you want the format changed in some way.  Note that it is possible to
make changes to the text between the two justifications without having to indent
any added non-crown lines to the precise amount that was used in the original text.
Added lines that are to start new paragraphs must, of course, be indented by
the correct amount or must be preceded by blank lines.  If the format is not to
be changed then the the previously specified indents need not be retyped.

  A  (Assigned)  The A switch causes ETV to use the Assigned conditions
for the new justification.  These conditions must have been were
previously established by the use of a justifying command with a G switch
in effect or as a result of a sequence consisting of an initial ⊗XJGET
command and then a ⊗XJUST ar a ⊗XJFILL command with the R switch in
effect.  This is the switch to use if you have just justified
a portion of some text and find that you now wants to justify an
additional portion of the original text that is still in the old format or if
you are making repeated changes to some text that is in non-normal form and
have already established the necessary conditions as just noted.

The desired margin conditions and the desired number of blank lines that
are to be used between paragraphs are specified by the string of decimal
numbers that may be typed following the switch letter or following the command.
Four numbers may be typed, refering respectively to the indent of crown
lines, the indent for all non-crown lines, the rightmost column position
to which the text may extend, and finally, the number of blank lines to be
used between paragraphs.

Note that left margins are now specified in terms of indents not in terms of
column positions as formerly. A zero indent is specified by typing 0.
Margin specifications are now always sticky.  The former distinction that
was specified by the control keys is no longer available and relative values
are no longer allowed. These former provisions were always causing
trouble for new users and they were seldom used in any case.

The initial default values for the margins have been set at 4,0,74.
The initial default condition as to the number of blank between
paragraphs is for there to be the same number of blank lines in the
justified text as there were in the original text.

To change the paragraph indentation alone, it is only necessary to
type a single decimal number specifying the desired indent.  To
change the left margin specification alone, it is only necessary to
type a comma followed by the desired decimal value.  To change the
right margin alone, it is necessary to precede the decimal number by
two commas.

It is now possible to specify the number of blank lines to be used (as 0, 1
2, etc.) with this number being typed in the fourth position in the string.
When a number is so specified, the number
of blank lines in the original text is disregarded and the specified number
of blank lines are used between all paragraphs.  This parameter is also sticky
and need not be retyped as long as one wants it to remain the same.

  The initial default value
for this parameter (stored as -1) is to require that the number of blank lines
at each paragraph break is to remain the same in the justified text as it was in
the original text.  If a positive value has been stored one may restore this
initial default condition by typing -1 for the fourth numerical parameter.


   Typical command strings.

   ⊗XJUST<cr>	Justify the current page  (or the ATTACH buffer if in
		ATTACH mode) using the default values for all parameters
		that might be specified by a string following thee command
		name.  These default values are initially set at
		N 4,0,72,-1, the N signifying the Normal switch is to be used
		which accepts any indent greater than 1 as well as a blank
		line to signal a new paragraph.  The string of decimal
		numbers (reported as P,L,R,B) indicate that the paragraph
		or crown indent is to be 4, the
		left or non-crown indent is to be 0, the rightmost character
		is not to go beyond column 74 and the distribution of
		blank lines is to be the same in the resulting text as
		found in the original text.


   αβXJU 0,4,66,0<cr>   Justify (both margins) the current page or the ATTACH buffer
		using the indents and right margin as specified and leaving
		no space blank lines between paragraphs.  The crown
		lines will all start with no indent and the left indent
		for the rest of the text will be 4.  The last occupied
		column will be 66.

  αβXJFI R 10,10,,1<cr>  JFILL (left margin only) the current page
		which has been justified, perhaps by the preceding command,
		The R switch tells ETV to take the former output parameters
		as those that are to be used to identify crown lines.  Note
		that this command calls for the indents of all lines to
		be the same and that paragraphs are now to be separated
		by single blank lines.  Had we failed to specify the number
		of blank lines the default condition would have been restored.
		In case there were no blank lines (as would be true after using
		the previous command) the identification
		of the crown lines would have been lost.
		
	Three new commands have been added for use with normal text.

⊗XJGET

	The ⊗XJGET command causes ETV to scan the specified section of the text
and to determine the indent values that were used for crown lines and non-crown
lines and the column position of the rightmost character.  It stores these
as sticky values for these parameters and these values will then be used should
a XJUST or XJFILL command be subsequently given without suffixed arguments.
The action is quite analogous to that taken when the G switch is used with
a XJUST or XJFILL command except that the values found are stored as the
conditions to be produced on a subsequent justification rather than as the
expected conditions to be found in the original text.  This command always
resets the B value to its original default value of -1, that is for
there to be the same arrangement of blank lines in the justified text as are
found in the original text.

	By using this command one can redetermine the parameters that were
used when the text was justified, presumably at some earlier editing session
or perhaps by someone else and one can do this without having to make the
determination by visual inspection.  Note that this command does not take
suffixed arguments.

⊗XSJFILL and ⊗XSJUST

    The ⊗XSJFILL  and  ⊗XSJUST  commands separate  all  sentences  in  the
specified text so that they all start with the non-crown indent, and  then
the individual  lines  are ⊗XJFILLed  or  ⊗XJUSTified.  As  a  consequence
paragraphing information as shown by an indent is lost but blank lines are
preserved.  Thess commands will accept suffixed arguments which are stored
as sticky parameters prior to the execution of the command and which  then
apply to future uses of these commands or of the normal ⊗XJFILL and ⊗XJUST
commands.

    The task  of rearranging  sentences within  a paragraph  or of  moving
sentences from one paragraph to another  is simplified by the use of  this
command.
⊗XALIGN ⊗XJLEFT ⊗XINDENT ⊗→ ⊗← ⊗XCENTER   MARGIN CONTROL commands:
	(See p. 16 for ⊗XJUST, ⊗XJFILL, ⊗XJGET, ⊗XSJUST and ⊗SJFILL)

      These commands  preserve  the identity  of  the text  lines  while
preforming certain operations on their left margins. 

    ⊗XALIGN moves all lines defined by the location of the arrow line and
a prefixed argument (with 1 line or the entire ATTACH buffer as the default
option) so that all lines start with a specified (or default) indentation.
The command uses initial TABs to the extent possible.  The command can
take a single suffixed decimal (sticky) argument to specify the desired
indentation.  The initial default value is set at 0.

  The command ⊗XALIGN
may be set to operate in one of two different modes with respect to the
treatmant of interior TABs.  The initial default mode is for all interior
TABs to be replaced by the equivalent number of spaces that they produced
before the alignment was effected.  The other mode is entered by typing the
letter T (for TAB) as a suffexed letter (after the command name and
separated from it by a space).  This mode leaves all interior TABs
untouched.  The mode as so changed is sticky and applies for all
subsequent ALIGN and INDENT commands.  The initial default mode may be
restored by typing the letter S (for spaces).


   INDENT simply moves the specified number of lines (default value of 1)
except when  in the ATTACH mode when it is  the entire ATTACH BUFFER) to
the right or left by the specified amount independent of  their original
starting positions.   This permits blocks  of code to be  moved right or
left while preserving their original relative indentations. INDENT will takes
one suffixed numerical argument specifying the desired indentation,
(a positive number if to the right or a negative number if to the
left).  Motion to the left is limited by the edge of the page but there is
no practical limit to the motion to the right so take care when changing 
the indent value.  The initial default indent value is 4.

	The command ⊗XINDENT 
may be set to operate in one of two different modes with respect to the
treatmant of interior TABs.  The initial default mode is for all interior
TABs to be replaced by the equivalent number of spaces that they produced
before the alignment was effected.  The other mode is entered by typing the
letter T (for TAB) as a suffexed letter (after the command name and
separated from it by a space).  This mode leaves all interior TABs
untouched.  The mode as so changed is sticky and applies for all
subsequent ALIGN and INDENT commands.  The initial default mode may be
restored by typing the letter S (for spaces).

   The commands ⊗→ and ⊗← are special cases  of INDENT.   They move  the
specified  lines to  the right  or left  by the (absolute) amount that had been 
set previously by the ⊗XINDENT command.   The default
number of lines is one if not in ATTACH mode or it is the  entire ATTACH
buffer, and the initial default indentation is 4.
require a ⊗X or a carriage return.  In common with INSERT they limit the
text motion to the left edge of the page.
These commands do not take suffixed arguments.


Typical commands.

   ⊗XALIGN<cr>	ALIGN the earrow line (or entire ATTACH buffer if in
		ATTACH mode)  with all lines moved to start with the
		default ALIGN indentation (originally set to 0).

   ⊗4⊗XALIGN 5<cr>      ALIGN 4 lines starting with the arrow line (or with
		the start of the ATTACH buffer if in ATTACH mode)
		so that they are indented by 5.

   ⊗XINDENT<cr>	INDENT the arrow line (or the entire ATTACH buffer
		if in the ATTACH mode) by the default value  (set to
		4 initially), but do not let any line move far enough
		to the left to lose any non-space characters.

   ⊗8⊗XINDENT 3<cr>	INDENT 8 lines starting with CURRENT by 3,
		that is, move the 8 lines to the right by 8 positions,
		with the new default value being set to 3.

   ⊗6⊗XIND T 3<cr>	INDENT 6 lines, starting with the arrow line, by 3
		after changing the mode so that interior TABs are kept
		as TABs.

   ⊗6⊗XINDENT -3<cr>	INDENT 6 lines starting with CURRENT by -3,
		(that is move them to the left by 3 positions).


   ⊗→		Move the CURRENT line or the ATTACH buffer contents
		to the right by the previously established amount.

   ⊗←		Move the CURRENT line or the ATTACH buffer contents
		to the left by the previously established amount.

   ⊗6⊗→		Move 6 lines starting with the CURRENT line or with
		the start of the ATTACH buffer to the right by the
		previously established amount.
         1         2         3         4         5         6         7         8
123456789 123456789 123456789 123456789 123456789 123456789 123456789 123456789

 1	200000,,0		Ignored (double-field mode for DD programs).

 2	100000,,0	DMQUOT	Quote all characters in the program.  That is,
				control chars will never be converted to
				blinking/bold characters to represent chars 0:37
				in the Stanford char set.  Also, 177's in the
				program will be sent and will not cause the next
				character to be quoted.  No conversion of
				Stanford to Ascii will be done for the three
				characters that are different in the two
				character sets.  No automatic erasing of new
				lines will be done.  Tabs will never be converted
				to spaces on output, nor spaces to tabs.

 3	40000,,0	TRUNCA	Truncate each output line to 80 characters.  When
				the 80th column of a line is passed on the DM
				display, following bytes will be ignored until a
				CR, LF, or FF appears.

 4      20000,,0        NOEEOL  Suppress the erasing of each line that normally
				occurs just before anything (including a CR or
				LF) is output on the line.

 5      10000,,0        NOEEOB  Suppress the erasing of any line on which nothing
				is output but CR or LF.

 6      4000,,0         BETWEE  Ignore spaces between tabs.  When a tab is
				encountered in the program, all following